/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bizfty.api.apiexecutor.gateways;

import com.bizfty.api.apiexecutor.beans.DeployRequest;
import com.bizfty.api.apiexecutor.beans.DeployResponse;
import com.bizfty.api.commons.beans.faults.BusinessException;
import com.bizfty.api.commons.beans.faults.TechnicalException;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Action;
import javax.xml.ws.FaultAction;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import javax.xml.ws.soap.MTOM;

/**
 *
 * @author johns
 */
@WebService(targetNamespace = "http://gateways.apiexecutor.api.bizfty.com", name = "ApiExe")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
@MTOM
//@XmlSeeAlso({
//    com.icss.regie.weixin.beans.ObjectFactory.class
//})
public interface ApiExe {

    /**
     * 上传Jar文件，通常是接口
     */
    @WebMethod(operationName = "deploy", action = "http://gateways.apiexecutor.api.bizfty.com/ApiExe/deploy")
    @WebResult(name = "DeployResponse", partName = "deployResponse", targetNamespace = "http://beans.apiexecutor.api.bizfty.com")
    @RequestWrapper(localName = "deploy", partName = "deployRequestWrapper", targetNamespace = "http://beans.apiexecutor.api.bizfty.com", className = "com.bizfty.api.apiexecutor.beans.DeployRequestWrapper")
    @ResponseWrapper(localName = "deployResponse", partName = "deployResponseWrapper", targetNamespace = "http://beans.apiexecutor.api.bizfty.com", className = "com.bizfty.api.apiexecutor.beans.DeployResponseWrapper")
    @Action(input = "http://gateways.apiexecutor.api.bizfty.com/ApiExe/deployRequest", output = "http://gateways.apiexecutor.api.bizfty.com/ApiExe/deployResponse", fault = {
        @FaultAction(className = BusinessException.class, value = "http://faults.beans.commons.api.bizfty.com/BusinessException"),
        @FaultAction(className = TechnicalException.class, value = "http://faults.beans.commons.api.bizfty.com/TechnicalException")
    })
    public DeployResponse deploy(@WebParam(name = "DeployRequest", targetNamespace = "http://beans.apiexecutor.api.bizfty.com") DeployRequest request) throws BusinessException, TechnicalException;

}
